import Layout from '../../components/docs-layout';
import toast from 'react-hot-toast';

export const meta = {
  title: 'Styling',
};

export default ({ children }) => <Layout meta={meta}>{children}</Layout>;

# Styling

You can style your notifications globally with the `toastOptions` inside the Toaster component, or for each notification manually.

### Set default for all toasts

```jsx
<Toaster
  toastOptions={{
    className: '',
    style: {
      border: '1px solid #713200',
      padding: '16px',
      color: '#713200',
    },
  }}
/>
```

### Set default for specific types

```jsx
<Toaster
  toastOptions={{
    success: {
      style: {
        background: 'green',
      },
    },
    error: {
      style: {
        background: 'red',
      },
    },
  }}
/>
```

### Style per toast

```jsx
toast('I have a border.', {
  style: {
    border: '1px solid black',
  },
});
```

## Change the offset

If you want to change the offset of your notifications, you can adapt the absolute position in `containerStyle`.

```jsx
<Toaster
  containerStyle={{
    top: 20,
    left: 20,
    bottom: 20,
    right: 20,
  }}
/>
```

## Change position of the toaster

By default, the toaster is position fixed in the window. If you want to place it somewhere else, you can overwrite the position with `containerStyle`.

```jsx
<Toaster
  containerStyle={{
    position: 'relative',
  }}
/>
```

## Change offset between toasts

If you want to change the offset between notifications change the gutter.

```jsx
<Toaster gutter={24} />
```

## Change icon color

All icon colors can be changed by supplying a `iconTheme` with a `primary` & `secondary` color.

```jsx
<Toaster
  toastOptions={{
    success: {
      iconTheme: {
        primary: 'green',
        secondary: 'black',
      },
    },
  }}
/>
```

## Change enter and exit animations

In this example, we provide a render function with the default `<ToastBar />`. We overwrite the animation style based on the current state.

```jsx
import { Toaster, ToastBar } from 'react-hot-toast';

<Toaster>
  {(t) => (
    <ToastBar
      toast={t}
      style={{
        ...t.style,
        animation: t.visible
          ? 'custom-enter 1s ease'
          : 'custom-exit 1s ease forwards',
      }}
    />
  )}
</Toaster>;
```
